#include "fsm.h"



void EmyptData(void *arg)
{
    SM_ARG *p = (SM_ARG *)arg;
    p->var.cnt = 0;
}


//初始化
State step_init(void * arg)
{
    SM_ARG *p = (SM_ARG *)arg;

    // 状态处理
    SetNextState(arg, s_count);

    // 数据处理
    EmyptData(arg);

    return p->st.ns;
}

// 正常工作状态
State step_count(void * arg)//计数
{
    SM_ARG *p = (SM_ARG *)arg;
    if (p->var.cnt < 3)
    {
        p->var.cnt ++;
        SetNextState(arg, s_count);
    }
    else
    {
        SetNextState(arg, s_done);
    }

    return p->st.ns;
}

// 任务完成
State step_done(void * arg)//计数完成
{
    SM_ARG *p = (SM_ARG *)arg;

    // 驻留
    SetNextState(arg, s_done);
    // 可以根据需要让其跳转到 s_init 
    return p->st.ns;
}

State step_default(void * arg)//错误过程
{
    SM_ARG *p = (SM_ARG *)arg;
    SetNextState(arg, s_done);
    return p->st.ns;
}


